package top.yxqz.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * @author: 余小小
 * @date: 2023/4/23
 * @description： - @RequestMapping标识一个类：设置映射请求的请求路径的初始信息
 * - @RequestMapping标识一个方法：设置映射请求请求路径的具体信息
 * <p>
 * value属性：映射路径值，多个值之间用逗号隔开，使用集合的方式如：{"/reqmp","/req"}
 * method属性: 请求的方法，一般是给设置在方法上加注解@RequestMapping的配置
 * params属性:  请求参数限制，如果不满足请求，则会报错400
 * 1. params = {"username"}，传参的时候，必须包含该参数，比如：/hello?username=yyds
 * 2. "!pwd" ,传参的时候,不可以包含该参数，
 * 3. "age=24",参数值必须是24  比如：/hello?username=yyds&age=24
 * 4. ”email!=111@qqq.com" ，参数不能是111@qqq.com
 */
@Controller
@RequestMapping({"/reqmp", "/req"})
public class RequestMapperStudy {
    /**
     * 接口路径:   /reqmp/hello
     * 跳转到hello页面
     *
     * @return
     */
    @RequestMapping(value = "/hello",
            method = {RequestMethod.POST},
            params = {"username", "!pwd", "age=24", "email!=111@qqq.com"},
            headers = {"Content-Type"})
    public String hello() {
        return "hello";
    }

    /**
     * ant风格
     * /?:随意的一个字符，但是不包括问号（一级）
     * /*:代表可以匹配任意个数字符（一级）
     * /**:任意级别，任何个数的字符（多级）
     *
     * @return
     */
    @RequestMapping({"/ant/?", "/ant/*", "/ant/**"})
    public String helloAnt() {
        return "hello";
    }

    /**
     * 使用rest风格
     *
     * @return
     */
    @RequestMapping("/rest/{id}")
    public String methodName(@PathVariable("id") Integer id) {
        System.out.println("id:" + id);
        return "hello";
    }
}
